import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description :
 * User: jiume
 * Date: 2025-04-05
 * Time: 16:33
 */
public class Test3 {
    public int longestArithSeqLength(int[] nums) {
        int n = nums.length;
        int[][] dp = new int[n][n];

        for (int i = 0; i < n; i++) {
            Arrays.fill(dp[i], 2);
        }

        // 绑定 原始数组的值 和 下标的关系
        Map<Integer, Integer> hash = new HashMap<>();
        hash.put(nums[0], 0); // 为第一次寻值做准备

        int ret = 2;
        // 固定倒数第二个位置的数，枚举最后一个位置的数
        for (int i = 1; i < n; i++) {
            for (int j = i+1; j < n; j++) {
                // 填一个dp值
                int a = 2 * nums[i] - nums[j];
                // 要么设置默认值，要么不拆包
                Integer index = hash.get(a);
                if (index != null && index < i) {
                    dp[i][j] = dp[index][i] + 1;
                }
                // i 是倒数第二个位置，j 是最后一个位置
                ret = Math.max(ret, dp[i][j]);
            }
            // 只有在 i 更新时，才更新
            hash.put(nums[i], i);
        }

        return ret; // 这里不需要判断是否等于2
    }
}